package com.ruoyi.college.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学科研究方向对象 research_direction
 * 
 * @author ruoyi
 * @date 2025-07-31
 */
public class ResearchDirection extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 唯一标识 */
    private String id;

    /** 所属二级学科id */
    @Excel(name = "所属二级学科id")
    private String secondSubjectId;

    /** 所属学院id */
    @Excel(name = "所属学院id")
    private String collegeId;

    /** 研究方向名称 */
    @Excel(name = "研究方向名称")
    private String name;

    /** 研究方向代码 */
    @Excel(name = "研究方向代码")
    private String researchDirectionCode;

    /** 研究类型 */
    @Excel(name = "研究类型")
    private Long researchType;

    /** 研究方向关键词(逗号分隔) */
    @Excel(name = "研究方向关键词(逗号分隔)")
    private String researchKeywords;

    /** 研究方向简介 */
    @Excel(name = "研究方向简介")
    private String description;

    /** 附件存储路径 */
    @Excel(name = "附件存储路径")
    private String attachmentPath;

    /** 方向负责人ID */
    @Excel(name = "方向负责人ID")
    private String leaderId;

    /** 预算金额 */
    @Excel(name = "预算金额")
    private BigDecimal budget;

    /** 研究起始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "研究起始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 研究结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "研究结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 状态：1(启用),0(停用) */
    @Excel(name = "状态：1(启用),0(停用)")
    private Long status;

    /** 版本号（乐观锁） */
    @Excel(name = "版本号", readConverterExp = "乐=观锁")
    private Long version;

    /** 创建人id */
    @Excel(name = "创建人id")
    private String createId;

    /** 更新人id */
    @Excel(name = "更新人id")
    private String updateId;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public void setSecondSubjectId(String secondSubjectId) 
    {
        this.secondSubjectId = secondSubjectId;
    }

    public String getSecondSubjectId() 
    {
        return secondSubjectId;
    }

    public void setCollegeId(String collegeId) 
    {
        this.collegeId = collegeId;
    }

    public String getCollegeId() 
    {
        return collegeId;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public String getResearchDirectionCode() {
        return researchDirectionCode;
    }

    public void setResearchDirectionCode(String researchDirectionCode) {
        this.researchDirectionCode = researchDirectionCode;
    }

    public void setResearchType(Long researchType) 
    {
        this.researchType = researchType;
    }

    public Long getResearchType() 
    {
        return researchType;
    }

    public void setResearchKeywords(String researchKeywords) 
    {
        this.researchKeywords = researchKeywords;
    }

    public String getResearchKeywords() 
    {
        return researchKeywords;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setAttachmentPath(String attachmentPath) 
    {
        this.attachmentPath = attachmentPath;
    }

    public String getAttachmentPath() 
    {
        return attachmentPath;
    }

    public void setLeaderId(String leaderId) 
    {
        this.leaderId = leaderId;
    }

    public String getLeaderId() 
    {
        return leaderId;
    }

    public void setBudget(BigDecimal budget) 
    {
        this.budget = budget;
    }

    public BigDecimal getBudget() 
    {
        return budget;
    }

    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }

    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setVersion(Long version) 
    {
        this.version = version;
    }

    public Long getVersion() 
    {
        return version;
    }

    public void setCreateId(String createId) 
    {
        this.createId = createId;
    }

    public String getCreateId() 
    {
        return createId;
    }

    public void setUpdateId(String updateId) 
    {
        this.updateId = updateId;
    }

    public String getUpdateId() 
    {
        return updateId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("secondSubjectId", getSecondSubjectId())
            .append("collegeId", getCollegeId())
            .append("name", getName())
            .append("researchDirectionCode", getResearchDirectionCode())
            .append("researchType", getResearchType())
            .append("researchKeywords", getResearchKeywords())
            .append("description", getDescription())
            .append("attachmentPath", getAttachmentPath())
            .append("leaderId", getLeaderId())
            .append("budget", getBudget())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("status", getStatus())
            .append("version", getVersion())
            .append("createId", getCreateId())
            .append("updateId", getUpdateId())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
